Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daybreak rework #24

Open
wants to merge 81 commits into
base: master
Choose a base branch
from
Open

Daybreak rework #24

wants to merge 81 commits into from

Conversation

KnockbackNemo
Copy link

@KnockbackNemo KnockbackNemo commented Oct 17, 2024

Quality Assurance Checklist

To make reviews more efficient, please make sure the board meets the following standards and check everything off once the board meets the quality check. Once everything has been checked, the assigned reviewers will begin the review process. Edit this description to check off the list.

There are exceptions with all guidelines. As long as your decisions are justified, then you are good! Contact the reviewers or the leads about any exceptions.

Please read every word on every bullet point before checking off the corresponding box.

Minimum Prerequisites

  • The board passes ERC and DRC.
    • Note some ERC warnings are acceptable (CAUTION please be careful)
    • Note some DRC warnings are acceptable (less so than ERC: CAUTION please be careful).
  • All traces are routed.
  • Units are in metric.
  • Gerbers are in a zip file in the main directory (after physical design is done)

Please read every word on every bullet point before checking off the corresponding box.

Schematic Level Requirements

  • Is proper noise resistance given to all peripheral devices (bypass caps and coils/ferrites)?
  • Is proper ESD protection given to all MCU input pins (zener diodes)? You could also write the input pin rating for the MCU on the schematic.
  • Is proper power protection given to peripheral devices (zener diodes)?
  • Are peripheral units used properly (reading datasheet)?
  • Are testing points added at useful places?
  • Is there proper short to GND protection at MCU outputs (inline resistors)?
  • Do ADC inputs have caps (appropriately sized to prevent RC delay)?
  • Are ADC inputs biased so there is room above expected value to determine if value is being overflowed?
  • Are LEDs located at useful places (comm, power, debugging, extra GPIO)? They should be placed in locations
  • Are parts chosen easy to collect?
  • Are parts chosen easy to solder?
  • Is there reverse polarity protection on inputs?
  • Do parts in the schematic match the actual part datasheet?

Please read every word on every bullet point before checking off the corresponding box.

BOM Requirements

  • Bill Of Materials: is there an Excel Sheet BOM and a Mouser Cart link?
  • Are all the correct parts in the BOM?
  • Is each part in the Mouser Cart in stock (or do we have the part in stock)?
  • Does each part in the Mouser Cart have a margin for part quantity?
  • Does every component in the schematic have a footprint, mouser link/datasheet, and reference number associated with it?

Please read every word on every bullet point before checking off the corresponding box.

Layout Level Requirements

2D Spacing

  • The components are spaced out at an optimal distance.
    • All components can be easily hand-soldered.
    • IPC-SM-782A Standard requires a minimum distance of 1.0mm from edge to edge.
  • Components that are in parallel with each other are spaced out at an equal distance when possible.
  • The components are aligned with each other when possible.
  • Components are grouped based off of functionality.
    • E.g. all components for CAN should be grouped.
  • Bypass capacitors are less than 1cm away from their respective IC's power pins.

3D Spacing

  • Layout of components have been placed with mounting location and usage of the board in mind.
    • Are PCBs going to be stacked on above/below this board? Are tall components placed accordingly?
    • Are buttons and lights easily accessible and viewable?
    • When mounted into the car, are the heights of the components and connectors accounted for?
  • I am not reading every word and I need to start this checklist over.
    • Please uncheck everything you have checked and start over.
  • Location of connectors and wires going out of the board will prevent messy wiring.
    • Are all the wires that are going in the same direction placed on the same edge of the board?

Components

  • Do footprints match the schematic?
    • Make sure pins on the footprint correspond to pins in the schematic
    • (e.g. counterclockwise pins on footprint and alternating pins on schematic is bad)
  • Custom footprints have been double checked with the datasheet.
  • Footprints are consistent across the PCB: i.e. all 0805 for Resistors/Capacitors
  • Pin 1 of the footprint is labeled in some way.
  • Are LED's in easy to see places?
  • Are test points in easy to reach places?
  • Are critical paths of switching converters as small as possible?

Copper Layer

  • The trace widths and trace clearances are greater than JLCPCB's minimum requirements (https://jlcpcb.com/capabilities/Capabilities).
    • Are signal traces are .15mm unless provided with reasoning?
      • NOTE: One net can have multiple trace widths
  • The trace lengths are as short as possible.
    • Can there be a more optimal route if you go to another layer?
  • Each trace's width is capable of handling the expected current flow.
    • Use PCB width calculator to calculate trace width.
  • *No sharp corners. No trace angles equal to or less than 90 degrees.
    • Orthogonal traces should have vias if necessary.
  • Are edges of board surrounded by clean ground on both layers with stitching vias?
  • Traces are in parallel with each other when possible (exceptions can be made to prevent signal coupling).
    • E.g. traces connected between an IC and MCU can be placed in parallel with each other.
  • There are no random trace appendages.
  • Vias placed in copper pads are fully encompassed in the copper pads.
  • Through-hole components do not have extraneous vias.
  • Vias should be appropriately sized according to the connected net(s) and expected current capacity.

*Not really a problem for modern manufacturing techniques but good practice and important for high speed signal integrity.

Silkscreen Layer

  • Visible text sizes are greater than .8mm(L), .8mm(H), .15mm(W).
  • All visible text is on the silkscreen layer.
  • All reference labels of each component are not overlapping a copper pad or another component.
  • All connector pins are labeled with a meaningful and helpful name.
  • All LEDs are labeled with a meaningful and helpful name.
  • Silkscreens are mostly facing one direction (or 2).

Edge Cut Layer

  • The dimensions of the board and the mounting holes are nice values in metric i.e. no long decimals.
  • The physical outline of the board is on the edge cut layer.
  • Edge cuts are straight and parallel with opposite edge of the board.
  • Mounting holes are aligned and support M3 screws. All mounting holes should have distances between them shown in comments layer.
  • Corners are curved and contoured to mounting holes.

Please read every word on every bullet point before checking off the corresponding box.

IMPORTANT NOTICE

  • I am confident that this board will be safe to use in a safety critical environment.
  • I have read every word on every bullet point and have only checked off a bullet point if I have read every word.
  • ((( OPTIONAL ))) I had fun :^)

Other Comments

Write any comments about the board that would help the reviewers here.

Copy link
Contributor

@Lakshay983 Lakshay983 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Today I learned that KiCAD doesn't differentiate between net labels and hierarchical labels if they're named the same thing. Pressing ~ on the net shows that KiCAD thinks they are electrically connected:
image consider renaming the name of the nets to be different.

Some ERC stuff:

  • the "Foward" pin on the MCU isn't connected to anything (misspelling go brrrr)
  • power labels are global so you don't need to have hierarchical labels. Either way, the relevant hierarchical labels aren't on the sheet.
    image

The dashboard PCB has pin 2 of the dashboard connector as BPS hazard and y'all have it as regen.

I thought we were getting rid of the 555 timer in favor of doing it in software? Doing it in hardware is also fine, was just wondering.

Make sure you update all the footprints and ask for a review on that before you start layout.

You shouldn't need to use the "SI8261ABC-IS" gate drivers, you should be able to just use the EL3H7 (right @ppatra126 ?) The gate of the mosfet doesn't sink that much current.

Right_Ind and Left_Ind are at 12V logic and referenced to GNDPWR, so you can't plug it into the gate of your mosfet since the 5V of the timer is referenced to GND (thus breaking the isolation barrier).
image

…e MinionBrdInterface so that they aren't connected. Changed Regen input to BPS Hazard light since we aren't using regen but will be alerting the driver of BPS faults.
@ppatra126
Copy link

Would it be possible to break out another 4-pin connector for MotorCAN? In case we want to try adding any lighting/pedal boards onto this gen for testing that would allow us to daisy chain CAN through controls without the leader board being a terminating end.

image
We found that this configuration probably doesn't actually work since current can be conducted in the reverse direction through the body diode. The most recent contactor driver should have a proper configuration so I would copy their schematic.

…r to motor can and disconnected shield pins for now since I haven't seen them used (will chack against old version to see what the circuit looked like), copied power-in circuit from contactor board, added optoisolator to timer and blinker light connection.
…pefully this did not involve doing anything that wasn't supposed to be done.
@KnockbackNemo
Copy link
Author

Thank you both for the reviews!

Lakshay:
I renamed the nets to be different, chose to use global power labels, and renamed/added power flags until the ERC was happy. Regen is now Bps_Hazard, the timer uses an optoisolator instead of a mosfet (since it feeds directly into another optoisolator, I don't think current will be a problem?), and the SI8261ABC-IS gate drivers are now also optoisolator drivers.

We decided we like abstracting the blinky stuff into hardware, so we plan to keep the timer unless @diyarajon prefers software.

Prat:
I added a second CAN connector and changed the type to be the same one as that used by CarCAN. I also copied the power-in input circuit from the contactor board, though I'm not sure I understand the issue/solution. If you have time, would you mind explaining how the current goes backward through the diode?

Additional changes/concerns:

  • I might be crazy, but it seemed like the optoisolators were reversed, so I flipped them all (and changed the resistor values to account for 12V logic). Could you check that they're being used correctly?
    image
  • Removed current-limiting resistor between the 555 timer and lights driver since the line feeds directly from one optoisolator to another, so the current should be within the allowable range already
  • Not sure if I copied over and adapted the contactor board power distribution input circuit correctly
    image
  • MotorCAN no longer uses the shield lines. We didn't seem to be using them to begin with, but if you could check the MotorCAN circuit, that would be greatly appreciated.
    image

Thank you very much!

@IshDeshpa
Copy link

IshDeshpa commented Nov 2, 2024

image
I would just remove the second set of potentiometers for brake/accel and only have one pot circuit per. Also if you're switching to a limit switch/pressure sensor or smth for brakes make sure that this circuit will continue to work as intended (is the pressure sensor resistive? e.g. will it work the same as a pot or will it require special circuitry)

@IshDeshpa
Copy link

IshDeshpa commented Nov 2, 2024

image
Do these just go to external LEDs? Is isolation required?
Edit: I think these are the contactors. You should probably rename/retitle the sheet.

Additionally, do we still need four contactors on this car? I would make sure the output connector here will match up with the new contactor driver board's pinout

@IshDeshpa
Copy link

image
image
Do you intend to have 8 mounting holes or is this just something left over from copy/paste

@IshDeshpa
Copy link

image
Resistor value you use here will depend on the LED you use. We typically use APTD2012LCGCK (from Standardized Mouser Components). See https://www.sparkfun.com/tutorials/219 and verify this value will work.

@IshDeshpa
Copy link

image
Where does this assumption come from? Where are the current limiting resistors going to be placed? I would make sure we have a plan for this, or if not we can just include the I-lim resistors on this board.

@IshDeshpa
Copy link

image
Would probably talk to Mika for DashboardPCB and spec out a LED (lowk it can just be one of them regular breadboard LEDs unless you really want something special)

@IshDeshpa
Copy link

IshDeshpa commented Nov 2, 2024

Make sure you update all the footprints and ask for a review on that before you start layout.

I would definitely add a P/N (part number) and footprint to every component on here. Looks like the footprints are OK but double check that they're the ones you want.

@Lakshay983
Copy link
Contributor

Also can you make that one 45 degree cap not 45 degrees, it's weird that it's the only thing that's 45

@KnockbackNemo
Copy link
Author

image
I changed the accel pot resistors to 100k pulldown and 4.9k current limiting, and I left the brake pot circuit as it is. From my scribbled attempts, I think this still works to keep current down and increase the range, but please let me know if I messed something up.

@Lakshay983
Copy link
Contributor

Avoid the via in pad for a pad this small (will make electrical contact when soldering hard
image

I also would not recommend a via bridging two pads:
image

@Lakshay983
Copy link
Contributor

image
There's an unconnected item

…paths, reconnected item (my bad, sorry about that).
@Lakshay983
Copy link
Contributor

Can you fix wtv setting is giving you all those bridging nets violation?

Can you move Array_PBC_Sense up a little bit so there's a clean fill in the MCU gnd fill

@Lakshay983
Copy link
Contributor

Other than that lgtm

@KnockbackNemo
Copy link
Author

I got rid of the errors by allowing bridged solder mask apertures between pads, so the footprints no longer match the library, but KiCAD doesn't complain anymore.

I wasn't sure where Array_PBC_Sense was causing issues, so I just looked over the fills and tried to see if there were any areas I could improve.

I'll work on the BOM and other images next. Thanks so much for all your help!

Copy link
Contributor

@Lakshay983 Lakshay983 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMG_6908

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants